home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / OpenDoc / CreditNow! / CreditNow! Source / $Utilities / proc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-30  |  2.7 KB  |  112 lines  |  [TEXT/MPS ]

  1. #include "Launchit.h"
  2.  
  3. // rgacsun
  4. OSErr    SetTarget( const unsigned long creator, Boolean makeFrontmost )
  5. {
  6.     OSErr    err;
  7.     ProcessSerialNumber    process;
  8.     FSSpec    fsRec;
  9.  
  10.     err = ProcInMemory( 'CNOW', &process );
  11.     
  12.     if( noErr == err )
  13.         goto egress;            // already in memory. Don't search the disk
  14.         
  15.     err = DoCatSearch( 'CNOW', 'APPL', &fsRec );
  16.     
  17.     if( !err )
  18.     {
  19.         err = LaunchMe( &fsRec, &process );
  20.         
  21.     }
  22.     
  23. egress:
  24.     if( !err && makeFrontmost )
  25.     {    // Bring to the front so user knows something is happening. 
  26.         SetFrontProcess( &process );        // make it active
  27.     }
  28.  
  29.     return err;
  30.  
  31. }
  32.  
  33. OSErr    MakeThisProcessFrontmost( void )
  34. {
  35.     OSErr    err;
  36.     ProcessSerialNumber    psn;
  37.     
  38.     err = GetCurrentProcess( &psn );
  39.     if( !err )
  40.     {
  41.         err = SetFrontProcess( &psn );
  42.     }
  43.     
  44.     return err;
  45. }
  46.  
  47. OSErr    ProcInMemory ( const unsigned long creator, ProcessSerialNumber *psn )
  48.  {
  49.     
  50.     OSErr                osErr        = noErr;
  51.     ProcessInfoRec        procInfo;
  52.     Str255                procName;
  53.     FSSpec              appFSSpec;
  54.  
  55.     // loop through looking at all processes    
  56.     psn->highLongOfPSN = kNoProcess;
  57.     psn->lowLongOfPSN  = kNoProcess;
  58.     
  59.     procInfo.processInfoLength    = sizeof(ProcessInfoRec);
  60.     procInfo.processName        = procName;
  61.     procInfo.processAppSpec     = &appFSSpec;
  62.  
  63.     while (procNotFound != (osErr = GetNextProcess( psn )))
  64.     {
  65.         if (noErr == (osErr = GetProcessInformation( psn, &procInfo))) 
  66.         {
  67.             if( creator == procInfo.processSignature )
  68.             {
  69.                 goto egress;            // psn already loaded
  70.             }
  71.         }
  72.     }
  73.     
  74. egress:
  75.     return    osErr;
  76. }
  77.  
  78. #if 0
  79.             Secs2Date(procInfo.processLaunchDate, &launchDateTime);
  80.             if ('\0' == procName[1])
  81.                 procName[1] = '0';
  82.             printf(
  83.                 "%-32P %08lx.%08lx '%c%c%c%c'  '%c%c%c%c'      %08lx %08lx %08lx %08lx %08lx.%08lx %2d/%2d/%2d %2d:%02d:%02d   %08lx   %08ld  %04d     %P\n",
  84.                 procInfo.processName,
  85.                 procInfo.processNumber.highLongOfPSN,
  86.                 procInfo.processNumber.lowLongOfPSN,
  87.                 ((char *) &procInfo.processType)[0],
  88.                 ((char *) &procInfo.processType)[1],
  89.                 ((char *) &procInfo.processType)[2],
  90.                 ((char *) &procInfo.processType)[3],
  91.                 ((char *) &procInfo.processSignature)[0],
  92.                 ((char *) &procInfo.processSignature)[1],
  93.                 ((char *) &procInfo.processSignature)[2],
  94.                 ((char *) &procInfo.processSignature)[3],
  95.                 procInfo.processMode,
  96.                 procInfo.processLocation,
  97.                 procInfo.processSize,
  98.                 procInfo.processFreeMem,
  99.                 procInfo.processLauncher.highLongOfPSN,
  100.                 procInfo.processLauncher.lowLongOfPSN,
  101.                 launchDateTime.month,
  102.                 launchDateTime.day,
  103.                 launchDateTime.year,
  104.                 launchDateTime.hour,
  105.                 launchDateTime.minute,
  106.                 launchDateTime.second,
  107.                 procInfo.processActiveTime,
  108.                 procInfo.processAppSpec -> parID,
  109.                 procInfo.processAppSpec -> vRefNum,
  110.                 procInfo.processAppSpec -> name
  111.             );
  112. #endif